Data Set
The selected data set is the NBA championships data from 1980 to 2018. The data set was selected because it interested me and having interest allows me to find data that can be relevant or interesting. All data sets are interactive, whether it be necessary or not, just to give the user the ability to zoom in and any other things they would like to do.
library(tidyverse)
library(readr)
library(ggplot2)
library(plotly)
library(sf)
library(broom)
NBAchampsdata <- read_csv("C:/Users/cadre/Desktop/.Rproj.user/data/NBAchampsdata.csv")
Rows: 220 Columns: 24
-- Column specification ---------------------------------------------
Delimiter: ","
chr (1): Team
dbl (23): Year, Game, Win, Home, MP, FG, FGA, FGP, TP, TPA, TPP, ...
i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
Interactive Data Set
For this data set, my intent was carried out, I wanted to show the scores for Game 1s over the years and Game 7s over the years to show two things. The first thing I wanted to show was obviously how the scoring would change as the series goes on and I assumed it would increase. Secondly I wanted to show how rare a Game 7 is in it’s totality as it relates to a championship series. Principles of designs were hard to implement here a theme that you will see persist is the minimal theme as it removes unnecessary noise.
NBAchampsPTS1<-filter(NBAchampsdata,Game==1)
my_plot<-ggplot(data=NBAchampsPTS1,mapping=aes(x=Year,y=PTS,color=Team))+
geom_point()+
theme_minimal()+
labs(title="Points Scored during Game 1")
interactive_plot<-ggplotly(my_plot, tooltip="text")
interactive_plot
NBAchampsPTS7<-filter(NBAchampsdata,Game==7)
my_plot<-ggplot(data=NBAchampsPTS7,mapping=aes(x=Year,y=PTS,color=Team))+
geom_point()+
theme_minimal()+
labs(title="Points Scored during Game 7")
interactive_plot<-ggplotly(my_plot, tooltip="text")
interactive_plot
Spatial Visualization
For this data set I had originally wanted to map the US without Alaska and Hawaii but after a while decided to simply settle for just the US map. With my plot you could simply see the origins that have excelled in the NBA and what cities have been lucky enough to enjoy the championship parade. I struggled on deciding if I would name the cities or teams but I figured that whoever looks at the map would care more so what city won than what team won.For the future I would like to find out how to remove Alaska and Hawaii from the map to better focus on the connected US States.
world_shapes<- read_sf("C:/Users/cadre/Desktop/.Rproj.user/data/ne_110m_admin_0_countries/ne_110m_admin_0_countries.shp")
us_map<-filter(world_shapes,ISO_A3 == "USA")
other_data<- tribble(
~City,~long,~lat,
"Los Angeles",-118.2436800,34.0522300,
"Boston",-71.0597700,42.3584300,
"Philadelphia",-75.1637900,39.9523300,
"Chicago",-87.6500500,41.8500300,
"Cleveland",-81.6954100,41.4995000,
"Miami",-80.1936600,25.7742700,
"Dallas",-96.8066700,32.7830600,
"Detroit",-83.0457500,42.3314300,
"Houston",-95.3632700,29.7632800,
"San Antonio",-98.4936300,29.4241200,
"Oakland",-122.2708000,37.8043700
)
champcities<-other_data%>%
st_as_sf(coords = c("long","lat"),crs=4326)
myplot_2<-ggplot()+
geom_sf(data=us_map)+
geom_sf(data=champcities,size=3,aes(color=City))+
theme_void()+
labs(title="Cities That Won Championships")
ggplotly(myplot_2, tooltip="text")
Visualization of a Model
Originally, I had intended on using the data sets to create some plot to track the points per game and how it fluctuates over the years. However, I could not find out how to do that so I altered it to show the Points scored each game during the Mavericks 2006 Championship win to show that their offense got increasingly better as they adjusted to their opponents. Additionally for this, If allotted the time, I would like to see this exact data for all game 7 teams to see if this remains constant for all extended series. The principle applied would be the minimalistic idea to not add too many things and create a busy data visualization.
mavsppg<-filter(NBAchampsdata,Team== "Mavericks")
points_model<-lm(Game~PTS, data=mavsppg)
summary(points_model)
Call:
lm(formula = Game ~ PTS, data = mavsppg)
Residuals:
1 2 3 4 5 6
-1.2607 -1.5387 0.5070 1.5070 -0.5139 1.2994
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -7.49901 5.33946 -1.404 0.233
PTS 0.11619 0.05605 2.073 0.107
Residual standard error: 1.452 on 4 degrees of freedom
Multiple R-squared: 0.5179, Adjusted R-squared: 0.3973
F-statistic: 4.296 on 1 and 4 DF, p-value: 0.1069
myplot_3<-ggplot(mavsppg,aes(x=Game, y=PTS))+
geom_point()+
geom_smooth(method="lm",formula="y~x")+
theme_minimal()
ggplotly(myplot_3, tooltip="text")
LS0tDQp0aXRsZTogIkRhdGEgVmlzdWFsaXphdGlvbiAtIE1pbmktUHJvamVjdCAyIg0KYXV0aG9yOiAiQ2FkcmVlbyBIdWRzb24gYGNodWRzb240NzM1QGZsb3JpZGFwb2x5LmVkdWAiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyBEYXRhIFNldA0KVGhlIHNlbGVjdGVkIGRhdGEgc2V0IGlzIHRoZSBOQkEgY2hhbXBpb25zaGlwcyBkYXRhIGZyb20gMTk4MCB0byAyMDE4LiBUaGUgZGF0YSBzZXQgd2FzIHNlbGVjdGVkIGJlY2F1c2UgaXQgaW50ZXJlc3RlZCBtZSBhbmQgaGF2aW5nIGludGVyZXN0IGFsbG93cyBtZSB0byBmaW5kIGRhdGEgdGhhdCBjYW4gYmUgcmVsZXZhbnQgb3IgaW50ZXJlc3RpbmcuIEFsbCBkYXRhIHNldHMgYXJlIGludGVyYWN0aXZlLCB3aGV0aGVyIGl0IGJlIG5lY2Vzc2FyeSBvciBub3QsIGp1c3QgdG8gZ2l2ZSB0aGUgdXNlciB0aGUgYWJpbGl0eSB0byB6b29tIGluIGFuZCBhbnkgb3RoZXIgdGhpbmdzIHRoZXkgd291bGQgbGlrZSB0byBkby4NCg0KDQoNCmBgYHtyfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KHNmKQ0KbGlicmFyeShicm9vbSkNCk5CQWNoYW1wc2RhdGEgPC0gcmVhZF9jc3YoIkM6L1VzZXJzL2NhZHJlL0Rlc2t0b3AvLlJwcm9qLnVzZXIvZGF0YS9OQkFjaGFtcHNkYXRhLmNzdiIpDQoNCmBgYA0KIyMgSW50ZXJhY3RpdmUgRGF0YSBTZXQNCg0KRm9yIHRoaXMgZGF0YSBzZXQsIG15IGludGVudCB3YXMgY2FycmllZCBvdXQsIEkgd2FudGVkIHRvIHNob3cgdGhlIHNjb3JlcyBmb3IgR2FtZSAxcyBvdmVyIHRoZSB5ZWFycyBhbmQgR2FtZSA3cyBvdmVyIHRoZSB5ZWFycyB0byBzaG93IHR3byB0aGluZ3MuIFRoZSBmaXJzdCB0aGluZyBJIHdhbnRlZCB0byBzaG93IHdhcyBvYnZpb3VzbHkgaG93IHRoZSBzY29yaW5nIHdvdWxkIGNoYW5nZSBhcyB0aGUgc2VyaWVzIGdvZXMgb24gYW5kIEkgYXNzdW1lZCBpdCB3b3VsZCBpbmNyZWFzZS4gU2Vjb25kbHkgSSB3YW50ZWQgdG8gc2hvdyBob3cgcmFyZSBhIEdhbWUgNyBpcyBpbiBpdCdzIHRvdGFsaXR5IGFzIGl0IHJlbGF0ZXMgdG8gYSBjaGFtcGlvbnNoaXAgc2VyaWVzLiBQcmluY2lwbGVzIG9mIGRlc2lnbnMgd2VyZSBoYXJkIHRvIGltcGxlbWVudCBoZXJlIGEgdGhlbWUgdGhhdCB5b3Ugd2lsbCBzZWUgcGVyc2lzdCBpcyB0aGUgbWluaW1hbCB0aGVtZSBhcyBpdCByZW1vdmVzIHVubmVjZXNzYXJ5IG5vaXNlLiANCmBgYHtyfQ0KTkJBY2hhbXBzUFRTMTwtZmlsdGVyKE5CQWNoYW1wc2RhdGEsR2FtZT09MSkNCm15X3Bsb3Q8LWdncGxvdChkYXRhPU5CQWNoYW1wc1BUUzEsbWFwcGluZz1hZXMoeD1ZZWFyLHk9UFRTLGNvbG9yPVRlYW0pKSsNCiAgZ2VvbV9wb2ludCgpKw0KICB0aGVtZV9taW5pbWFsKCkrDQogIGxhYnModGl0bGU9IlBvaW50cyBTY29yZWQgZHVyaW5nIEdhbWUgMSIpDQppbnRlcmFjdGl2ZV9wbG90PC1nZ3Bsb3RseShteV9wbG90LCB0b29sdGlwPSJ0ZXh0IikNCmludGVyYWN0aXZlX3Bsb3QNCg0KTkJBY2hhbXBzUFRTNzwtZmlsdGVyKE5CQWNoYW1wc2RhdGEsR2FtZT09NykNCm15X3Bsb3Q8LWdncGxvdChkYXRhPU5CQWNoYW1wc1BUUzcsbWFwcGluZz1hZXMoeD1ZZWFyLHk9UFRTLGNvbG9yPVRlYW0pKSsNCiAgZ2VvbV9wb2ludCgpKw0KICB0aGVtZV9taW5pbWFsKCkrDQogIGxhYnModGl0bGU9IlBvaW50cyBTY29yZWQgZHVyaW5nIEdhbWUgNyIpDQppbnRlcmFjdGl2ZV9wbG90PC1nZ3Bsb3RseShteV9wbG90LCB0b29sdGlwPSJ0ZXh0IikNCmludGVyYWN0aXZlX3Bsb3QNCmBgYA0KDQojIyBTcGF0aWFsIFZpc3VhbGl6YXRpb24NCg0KRm9yIHRoaXMgZGF0YSBzZXQgSSBoYWQgb3JpZ2luYWxseSB3YW50ZWQgdG8gbWFwIHRoZSBVUyB3aXRob3V0IEFsYXNrYSBhbmQgSGF3YWlpIGJ1dCBhZnRlciBhIHdoaWxlIGRlY2lkZWQgdG8gc2ltcGx5IHNldHRsZSBmb3IganVzdCB0aGUgVVMgbWFwLiBXaXRoIG15IHBsb3QgeW91IGNvdWxkIHNpbXBseSBzZWUgdGhlIG9yaWdpbnMgdGhhdCBoYXZlIGV4Y2VsbGVkIGluIHRoZSBOQkEgYW5kIHdoYXQgY2l0aWVzIGhhdmUgYmVlbiBsdWNreSBlbm91Z2ggdG8gZW5qb3kgdGhlIGNoYW1waW9uc2hpcCBwYXJhZGUuIEkgc3RydWdnbGVkIG9uIGRlY2lkaW5nIGlmIEkgd291bGQgbmFtZSB0aGUgY2l0aWVzIG9yIHRlYW1zIGJ1dCBJIGZpZ3VyZWQgdGhhdCB3aG9ldmVyIGxvb2tzIGF0IHRoZSBtYXAgd291bGQgY2FyZSBtb3JlIHNvIHdoYXQgY2l0eSB3b24gdGhhbiB3aGF0IHRlYW0gd29uLkZvciB0aGUgZnV0dXJlIEkgd291bGQgbGlrZSB0byBmaW5kIG91dCBob3cgdG8gcmVtb3ZlIEFsYXNrYSBhbmQgSGF3YWlpIGZyb20gdGhlIG1hcCB0byBiZXR0ZXIgZm9jdXMgb24gdGhlIGNvbm5lY3RlZCBVUyBTdGF0ZXMuDQpgYGB7cn0NCndvcmxkX3NoYXBlczwtIHJlYWRfc2YoIkM6L1VzZXJzL2NhZHJlL0Rlc2t0b3AvLlJwcm9qLnVzZXIvZGF0YS9uZV8xMTBtX2FkbWluXzBfY291bnRyaWVzL25lXzExMG1fYWRtaW5fMF9jb3VudHJpZXMuc2hwIikNCnVzX21hcDwtZmlsdGVyKHdvcmxkX3NoYXBlcyxJU09fQTMgPT0gIlVTQSIpDQoNCm90aGVyX2RhdGE8LSB0cmliYmxlKA0KICB+Q2l0eSx+bG9uZyx+bGF0LA0KICAiTG9zIEFuZ2VsZXMiLC0xMTguMjQzNjgwMCwzNC4wNTIyMzAwLA0KICAiQm9zdG9uIiwtNzEuMDU5NzcwMCw0Mi4zNTg0MzAwLA0KICAiUGhpbGFkZWxwaGlhIiwtNzUuMTYzNzkwMCwzOS45NTIzMzAwLA0KICAiQ2hpY2FnbyIsLTg3LjY1MDA1MDAsNDEuODUwMDMwMCwNCiAgIkNsZXZlbGFuZCIsLTgxLjY5NTQxMDAsNDEuNDk5NTAwMCwNCiAgIk1pYW1pIiwtODAuMTkzNjYwMCwyNS43NzQyNzAwLA0KICAiRGFsbGFzIiwtOTYuODA2NjcwMCwzMi43ODMwNjAwLA0KICAiRGV0cm9pdCIsLTgzLjA0NTc1MDAsNDIuMzMxNDMwMCwNCiAgIkhvdXN0b24iLC05NS4zNjMyNzAwLDI5Ljc2MzI4MDAsDQogICJTYW4gQW50b25pbyIsLTk4LjQ5MzYzMDAsMjkuNDI0MTIwMCwNCiAgIk9ha2xhbmQiLC0xMjIuMjcwODAwMCwzNy44MDQzNzAwDQopDQpjaGFtcGNpdGllczwtb3RoZXJfZGF0YSU+JQ0KICBzdF9hc19zZihjb29yZHMgPSBjKCJsb25nIiwibGF0IiksY3JzPTQzMjYpDQoNCm15cGxvdF8yPC1nZ3Bsb3QoKSsNCiAgZ2VvbV9zZihkYXRhPXVzX21hcCkrDQogIGdlb21fc2YoZGF0YT1jaGFtcGNpdGllcyxzaXplPTMsYWVzKGNvbG9yPUNpdHkpKSsNCiAgdGhlbWVfdm9pZCgpKw0KICBsYWJzKHRpdGxlPSJDaXRpZXMgVGhhdCBXb24gQ2hhbXBpb25zaGlwcyIpDQpnZ3Bsb3RseShteXBsb3RfMiwgdG9vbHRpcD0idGV4dCIpDQpgYGANCg0KIyMgVmlzdWFsaXphdGlvbiBvZiBhIE1vZGVsDQoNCk9yaWdpbmFsbHksIEkgaGFkIGludGVuZGVkIG9uIHVzaW5nIHRoZSBkYXRhIHNldHMgdG8gY3JlYXRlIHNvbWUgcGxvdCB0byB0cmFjayB0aGUgcG9pbnRzIHBlciBnYW1lIGFuZCBob3cgaXQgZmx1Y3R1YXRlcyBvdmVyIHRoZSB5ZWFycy4gSG93ZXZlciwgSSBjb3VsZCBub3QgZmluZCBvdXQgaG93IHRvIGRvIHRoYXQgc28gSSBhbHRlcmVkIGl0IHRvIHNob3cgdGhlIFBvaW50cyBzY29yZWQgZWFjaCBnYW1lIGR1cmluZyB0aGUgTWF2ZXJpY2tzIDIwMDYgQ2hhbXBpb25zaGlwIHdpbiB0byBzaG93IHRoYXQgdGhlaXIgb2ZmZW5zZSBnb3QgaW5jcmVhc2luZ2x5IGJldHRlciBhcyB0aGV5IGFkanVzdGVkIHRvIHRoZWlyIG9wcG9uZW50cy4gQWRkaXRpb25hbGx5IGZvciB0aGlzLCBJZiBhbGxvdHRlZCB0aGUgdGltZSwgSSB3b3VsZCBsaWtlIHRvIHNlZSB0aGlzIGV4YWN0IGRhdGEgZm9yIGFsbCBnYW1lIDcgdGVhbXMgdG8gc2VlIGlmIHRoaXMgcmVtYWlucyBjb25zdGFudCBmb3IgYWxsIGV4dGVuZGVkIHNlcmllcy4gVGhlIHByaW5jaXBsZSBhcHBsaWVkIHdvdWxkIGJlIHRoZSBtaW5pbWFsaXN0aWMgaWRlYSB0byBub3QgYWRkIHRvbyBtYW55IHRoaW5ncyBhbmQgY3JlYXRlIGEgYnVzeSBkYXRhIHZpc3VhbGl6YXRpb24uIA0KYGBge3J9DQptYXZzcHBnPC1maWx0ZXIoTkJBY2hhbXBzZGF0YSxUZWFtPT0gIk1hdmVyaWNrcyIpDQpwb2ludHNfbW9kZWw8LWxtKEdhbWV+UFRTLCBkYXRhPW1hdnNwcGcpDQpzdW1tYXJ5KHBvaW50c19tb2RlbCkNCm15cGxvdF8zPC1nZ3Bsb3QobWF2c3BwZyxhZXMoeD1HYW1lLCB5PVBUUykpKw0KICBnZW9tX3BvaW50KCkrDQogIGdlb21fc21vb3RoKG1ldGhvZD0ibG0iLGZvcm11bGE9Inl+eCIpKw0KICB0aGVtZV9taW5pbWFsKCkNCmdncGxvdGx5KG15cGxvdF8zLCB0b29sdGlwPSJ0ZXh0IikNCmBgYA0KDQo=